package br.com.mmsearch.main;

import java.io.IOException;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import br.com.mmsearch.beans.Filme;
import br.com.mmsearch.beans.Musica;
import br.com.mmsearch.hib.FilmeHIB;
import br.com.mmsearch.hib.MusicaHIB;


public class Main {

	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
		FilmeHIB filmeHIB = new FilmeHIB();
		MusicaHIB musicaHIB = new MusicaHIB();
		Filme filmeObject;
		Musica musicaObject;
		Set<Musica> musicas;
		
		String str = "";
		for(int i=82001; i<100001; i++){
			if(i<10)
				str = "tt000000";
			else if(i<100)
				str = "tt00000";
			else if(i<1000)
				str = "tt0000";
			else if(i<10000)
				str = "tt000";
			else if(i<100000)
				str = "tt00";
			else if(i<1000000)
				str = "tt0";
			else if(i<10000000)
				str = "tt";
			
			String conteudo = Functions.getHTML(str+i);
			conteudo = new String(conteudo.getBytes(), "UTF-8");   
			if(!conteudo.isEmpty() ){
				filmeObject = new Filme();
				musicas = new HashSet<Musica>();
				// Titulo e Ano do filme
				String tituloAno = Functions.getTituloAno(conteudo);
				String titulo = Functions.getTitulo(tituloAno);
				int ano = Functions.getAno(tituloAno);
				filmeObject.setIdfilme(i);
				filmeObject.setTituloAno(tituloAno);
				filmeObject.setTitulo(titulo);
				filmeObject.setAno(ano);
				
				// Musicas e Cantores
				List<String> divsMusica = Functions.getDivsMusica(conteudo);
				if(!divsMusica.isEmpty()){
					for (String divMusica : divsMusica) {
						musicaObject = new Musica();
						String musica = Functions.getMusica(divMusica);
						String escritores = Functions.getEscritores(divMusica);
						String realizadores = Functions.getRealizadores(divMusica);
						String escritoresAndRealizadores = Functions.getEscritoresAndRealizadores(divMusica);
						musicaObject.setMusica(musica);
						musicaObject.setEscritores(escritores);
						musicaObject.setRealizadores(realizadores);
						musicaObject.setEscritoresRealizadores(escritoresAndRealizadores);
						
						if(!musicaHIB.isMusicaCadastrada(musicaObject)){
							musicaHIB.salvar(musicaObject);
							musicas.add(musicaObject);
						}
						else{
							musicas.add(musicaHIB.consultarByObject(musicaObject));
						}
					}	
				}

				if(!musicas.isEmpty())
					filmeObject.setMusicas(musicas);
				
				filmeHIB.salvar(filmeObject);
				System.out.println(i);
			}
		}
	}
}
